// match方法 对字符串进行正则匹配，返回匹配结果
// 成功会返回一个数据，失败返回null

let str1 = '测试我是我自己'
let r11 = /我/
let r12 = /国/
// console.log(str1.match(r11));
// console.log(str1.match(r12));

// 从上面的案例可以看到这个方法和exec的执行结果非常类似
// 不同的地方在于如果正则使用了g修饰符，他会一次返回所有的匹配结果
// 而且这个结果中就没有了index input等属性了
let r13 = /我/g
// console.log(str1.match(r13));


// search 返回第一个满足条件的匹配结果在整个字符串中的位置。如果没有任何匹配，则返回-1
console.log(str1.search(r11));
console.log(str1.search(r12));

// replace 可以替换匹配的值。它接受两个参数，第一个是正则表达式，表示搜索模式，第二个是替换的内容
// 如果正则表达式不加g修饰符，就只会替换第一个匹配成功的值，否则就是替换所有匹配成功的
'aaa'.replace('a', 'b') // "baa"
'aaa'.replace(/a/, 'b') // "baa"
'aaa'.replace(/a/g, 'b') // "bbb"


var str2 = "他好像有点傻, 没有激情, Baby";
console.log(str2.replace(/(激情|傻|b)+/, "*"));
// 如果不使用g，那这个正则会在匹配一次成功之后就停止匹配
// 如果使用了全局匹配，则会一直匹配到不符合为止
console.log(str2.replace(/(激情|傻|b)+/gi, "*"));
// 这个replace还有一种用法就是他是可以链式调用的
// JSON.parse(JSON.stringify(data).replace(/name1/g, 'new_name1').replace(/name2/g, 'new_name2').replace(/name3/g, 'new_name3'))

// 检测邮箱的验证
let reg4=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
let str3='dunjian@sina.com'
console.log(reg4.test(str3));